| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260 | 1
1
1
1
1
16
1
2
6
6
1
1
1
1
1
1
1
1
1
1
1
1
1
1
| System.register(['aurelia-metadata', 'aurelia-loader', 'aurelia-binding', './html-behavior', './view-strategy', './util'], function (_export) {
'use strict';
var Metadata, TemplateRegistryEntry, ValueConverterResource, HtmlBehaviorResource, ViewStrategy, TemplateRegistryViewStrategy, hyphenate, ResourceModule, ResourceDescription, ModuleAnalyzer;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
return {
setters: [function (_aureliaMetadata) {
Metadata = _aureliaMetadata.Metadata;
}, function (_aureliaLoader) {
TemplateRegistryEntry = _aureliaLoader.TemplateRegistryEntry;
}, function (_aureliaBinding) {
ValueConverterResource = _aureliaBinding.ValueConverterResource;
}, function (_htmlBehavior) {
HtmlBehaviorResource = _htmlBehavior.HtmlBehaviorResource;
}, function (_viewStrategy) {
ViewStrategy = _viewStrategy.ViewStrategy;
TemplateRegistryViewStrategy = _viewStrategy.TemplateRegistryViewStrategy;
}, function (_util) {
hyphenate = _util.hyphenate;
}],
execute: function () {
ResourceModule = (function () {
function ResourceModule(moduleId) {
_classCallCheck(this, ResourceModule);
this.id = moduleId;
this.moduleInstance = null;
this.mainResource = null;
this.resources = null;
this.viewStrategy = null;
this.isAnalyzed = false;
}
ResourceModule.prototype.analyze = function analyze(container) {
var current = this.mainResource,
resources = this.resources,
viewStrategy = this.viewStrategy,
i,
ii,
metadata;
if (this.isAnalyzed) {
return;
}
this.isAnalyzed = true;
if (current) {
metadata = current.metadata;
metadata.viewStrategy = viewStrategy;
if ('analyze' in metadata) {
metadata.analyze(container, current.value);
}
}
for (i = 0, ii = resources.length; i < ii; ++i) {
current = resources[i];
metadata = current.metadata;
metadata.viewStrategy = viewStrategy;
if ('analyze' in metadata) {
metadata.analyze(container, current.value);
}
}
};
ResourceModule.prototype.register = function register(registry, name) {
var i,
ii,
resources = this.resources;
if (this.mainResource) {
this.mainResource.metadata.register(registry, name);
name = null;
}
for (i = 0, ii = resources.length; i < ii; ++i) {
resources[i].metadata.register(registry, name);
name = null;
}
};
ResourceModule.prototype.load = function load(container) {
if (this.onLoaded) {
return this.onLoaded;
}
var current = this.mainResource,
resources = this.resources,
i,
ii,
metadata,
loads = [];
if (current) {
metadata = current.metadata;
if ('load' in metadata) {
loads.push(metadata.load(container, current.value));
}
}
for (i = 0, ii = resources.length; i < ii; ++i) {
current = resources[i];
metadata = current.metadata;
if ('load' in metadata) {
loads.push(metadata.load(container, current.value));
}
}
this.onLoaded = Promise.all(loads);
return this.onLoaded;
};
return ResourceModule;
})();
ResourceDescription = function ResourceDescription(key, exportedValue, resourceTypeMeta) {
_classCallCheck(this, ResourceDescription);
if (!resourceTypeMeta) {
resourceTypeMeta = Metadata.get(Metadata.resource, exportedValue);
if (!resourceTypeMeta) {
resourceTypeMeta = new HtmlBehaviorResource();
resourceTypeMeta.elementName = hyphenate(key);
Reflect.defineMetadata(Metadata.resource, resourceTypeMeta, exportedValue);
}
}
if (resourceTypeMeta instanceof HtmlBehaviorResource) {
if (resourceTypeMeta.elementName === undefined) {
//customeElement()
resourceTypeMeta.elementName = hyphenate(key);
} else if (resourceTypeMeta.attributeName === undefined) {
//customAttribute()
resourceTypeMeta.attributeName = hyphenate(key);
} else if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {
//no customeElement or customAttribute but behavior added by other metadata
HtmlBehaviorResource.convention(key, resourceTypeMeta);
}
} else if (!resourceTypeMeta.name) {
resourceTypeMeta.name = hyphenate(key);
}
this.metadata = resourceTypeMeta;
this.value = exportedValue;
};
ModuleAnalyzer = (function () {
function ModuleAnalyzer() {
_classCallCheck(this, ModuleAnalyzer);
this.cache = {};
}
ModuleAnalyzer.prototype.getAnalysis = function getAnalysis(moduleId) {
return this.cache[moduleId];
};
ModuleAnalyzer.prototype.analyze = function analyze(moduleId, moduleInstance, viewModelMember) {
var mainResource,
fallbackValue,
fallbackKey,
resourceTypeMeta,
key,
exportedValue,
resources = [],
conventional,
viewStrategy,
resourceModule;
resourceModule = this.cache[moduleId];
if (resourceModule) {
return resourceModule;
}
resourceModule = new ResourceModule(moduleId);
this.cache[moduleId] = resourceModule;
if (typeof moduleInstance === 'function') {
moduleInstance = { 'default': moduleInstance };
}
if (viewModelMember) {
mainResource = new ResourceDescription(viewModelMember, moduleInstance[viewModelMember]);
}
for (key in moduleInstance) {
exportedValue = moduleInstance[key];
if (key === viewModelMember || typeof exportedValue !== 'function') {
continue;
}
resourceTypeMeta = Metadata.get(Metadata.resource, exportedValue);
if (resourceTypeMeta) {
if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {
//no customeElement or customAttribute but behavior added by other metadata
HtmlBehaviorResource.convention(key, resourceTypeMeta);
}
if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {
//no convention and no customeElement or customAttribute but behavior added by other metadata
resourceTypeMeta.elementName = hyphenate(key);
}
if (!mainResource && resourceTypeMeta instanceof HtmlBehaviorResource && resourceTypeMeta.elementName !== null) {
mainResource = new ResourceDescription(key, exportedValue, resourceTypeMeta);
} else {
resources.push(new ResourceDescription(key, exportedValue, resourceTypeMeta));
}
} else if (exportedValue instanceof ViewStrategy) {
viewStrategy = exportedValue;
} else if (exportedValue instanceof TemplateRegistryEntry) {
viewStrategy = new TemplateRegistryViewStrategy(moduleId, exportedValue);
} else {
if (conventional = HtmlBehaviorResource.convention(key)) {
if (conventional.elementName !== null && !mainResource) {
mainResource = new ResourceDescription(key, exportedValue, conventional);
} else {
resources.push(new ResourceDescription(key, exportedValue, conventional));
}
Reflect.defineMetadata(Metadata.resource, conventional, exportedValue);
} else if (conventional = ValueConverterResource.convention(key)) {
resources.push(new ResourceDescription(key, exportedValue, conventional));
Reflect.defineMetadata(Metadata.resource, conventional, exportedValue);
} else if (!fallbackValue) {
fallbackValue = exportedValue;
fallbackKey = key;
}
}
}
if (!mainResource && fallbackValue) {
mainResource = new ResourceDescription(fallbackKey, fallbackValue);
}
resourceModule.moduleInstance = moduleInstance;
resourceModule.mainResource = mainResource;
resourceModule.resources = resources;
resourceModule.viewStrategy = viewStrategy;
return resourceModule;
};
return ModuleAnalyzer;
})();
_export('ModuleAnalyzer', ModuleAnalyzer);
}
};
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL3RlbXBsYXRpbmcvc3JjL21vZHVsZS1hbmFseXplci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7NElBT00sY0FBYyxFQXVGZCxtQkFBbUIsRUFnQ1osY0FBYzs7Ozs7O2tDQTlIbkIsUUFBUTs7NkNBQ1IscUJBQXFCOzsrQ0FDckIsc0JBQXNCOzsyQ0FDdEIsb0JBQW9COzttQ0FDcEIsWUFBWTttREFBQyw0QkFBNEI7O3dCQUN6QyxTQUFTOzs7QUFFWCxvQkFBYztBQUNQLGlCQURQLGNBQWMsQ0FDTixRQUFRLEVBQUM7Z0NBRGpCLGNBQWM7O0FBRWhCLGNBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDO0FBQ25CLGNBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBQzNCLGNBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLGNBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQ3RCLGNBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLGNBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1NBQ3pCOztBQVJHLHNCQUFjLFdBVWxCLE9BQU8sR0FBQSxpQkFBQyxTQUFTLEVBQUM7QUFDaEIsY0FBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVk7Y0FDM0IsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTO2NBQzFCLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWTtjQUNoQyxDQUFDO2NBQUUsRUFBRTtjQUFFLFFBQVEsQ0FBQzs7QUFFcEIsY0FBRyxJQUFJLENBQUMsVUFBVSxFQUFDO0FBQ2pCLG1CQUFPO1dBQ1I7O0FBRUQsY0FBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7O0FBRXZCLGNBQUcsT0FBTyxFQUFDO0FBQ1Qsb0JBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQzVCLG9C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IiwiZmlsZSI6Ii9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL3RlbXBsYXRpbmcvc3JjL21vZHVsZS1hbmFseXplci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWV0YWRhdGF9IGZyb20gJ2F1cmVsaWEtbWV0YWRhdGEnO1xuaW1wb3J0IHtUZW1wbGF0ZVJlZ2lzdHJ5RW50cnl9IGZyb20gJ2F1cmVsaWEtbG9hZGVyJztcbmltcG9ydCB7VmFsdWVDb252ZXJ0ZXJSZXNvdXJjZX0gZnJvbSAnYXVyZWxpYS1iaW5kaW5nJztcbmltcG9ydCB7SHRtbEJlaGF2aW9yUmVzb3VyY2V9IGZyb20gJy4vaHRtbC1iZWhhdmlvcic7XG5pbXBvcnQge1ZpZXdTdHJhdGVneSxUZW1wbGF0ZVJlZ2lzdHJ5Vmlld1N0cmF0ZWd5fSBmcm9tICcuL3ZpZXctc3RyYXRlZ3knO1xuaW1wb3J0IHtoeXBoZW5hdGV9IGZyb20gJy4vdXRpbCc7XG5cbmNsYXNzIFJlc291cmNlTW9kdWxlIHtcbiAgY29uc3RydWN0b3IobW9kdWxlSWQpe1xuICAgIHRoaXMuaWQgPSBtb2R1bGVJZDtcbiAgICB0aGlzLm1vZHVsZUluc3RhbmNlID0gbnVsbDtcbiAgICB0aGlzLm1haW5SZXNvdXJjZSA9IG51bGw7XG4gICAgdGhpcy5yZXNvdXJjZXMgPSBudWxsO1xuICAgIHRoaXMudmlld1N0cmF0ZWd5ID0gbnVsbDtcbiAgICB0aGlzLmlzQW5hbHl6ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGFuYWx5emUoY29udGFpbmVyKXtcbiAgICB2YXIgY3VycmVudCA9IHRoaXMubWFpblJlc291cmNlLFxuICAgICAgICByZXNvdXJjZXMgPSB0aGlzLnJlc291cmNlcyxcbiAgICAgICAgdmlld1N0cmF0ZWd5ID0gdGhpcy52aWV3U3RyYXRlZ3ksXG4gICAgICAgIGksIGlpLCBtZXRhZGF0YTtcblxuICAgIGlmKHRoaXMuaXNBbmFseXplZCl7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0FuYWx5emVkID0gdHJ1ZTtcblxuICAgIGlmKGN1cnJlbnQpe1xuICAgICAgbWV0YWRhdGEgPSBjdXJyZW50Lm1ldGFkYXRhO1xuICAgICAgbWV0YWRhdGEudmlld1N0cmF0ZWd5ID0gdmlld1N0cmF0ZWd5O1xuXG4gICAgICBpZignYW5hbHl6ZScgaW4gbWV0YWRhdGEpe1xuICAgICAgICBtZXRhZGF0YS5hbmFseXplKGNvbnRhaW5lciwgY3VycmVudC52YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yKGkgPSAwLCBpaSA9IHJlc291cmNlcy5sZW5ndGg7IGkgPCBpaTsgKytpKXtcbiAgICAgIGN1cnJlbnQgPSByZXNvdXJjZXNbaV07XG4gICAgICBtZXRhZGF0YSA9IGN1cnJlbnQubWV0YWRhdGE7XG4gICAgICBtZXRhZGF0YS52aWV3U3RyYXRlZ3kgPSB2aWV3U3RyYXRlZ3k7XG5cbiAgICAgIGlmKCdhbmFseXplJyBpbiBtZXRhZGF0YSl7XG4gICAgICAgIG1ldGFkYXRhLmFuYWx5emUoY29udGFpbmVyLCBjdXJyZW50LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZWdpc3RlcihyZWdpc3RyeSwgbmFtZSl7XG4gICAgdmFyIGksIGlpLCByZXNvdXJjZXMgPSB0aGlzLnJlc291cmNlcztcblxuICAgIGlmKHRoaXMubWFpblJlc291cmNlKXtcbiAgICAgIHRoaXMubWFpblJlc291cmNlLm1ldGFkYXRhLnJlZ2lzdGVyKHJlZ2lzdHJ5LCBuYW1lKTtcbiAgICAgIG5hbWUgPSBudWxsO1xuICAgIH1cblxuICAgIGZvcihpID0gMCwgaWkgPSByZXNvdXJjZXMubGVuZ3RoOyBpIDwgaWk7ICsraSl7XG4gICAgICByZXNvdXJjZXNbaV0ubWV0YWRhdGEucmVnaXN0ZXIocmVnaXN0cnksIG5hbWUpO1xuICAgICAgbmFtZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgbG9hZChjb250YWluZXIpe1xuICAgIGlmKHRoaXMub25Mb2FkZWQpe1xuICAgICAgcmV0dXJuIHRoaXMub25Mb2FkZWQ7XG4gICAgfVxuXG4gICAgdmFyIGN1cnJlbnQgPSB0aGlzLm1haW5SZXNvdXJjZSxcbiAgICAgICAgcmVzb3VyY2VzID0gdGhpcy5yZXNvdXJjZXMsXG4gICAgICAgIGksIGlpLCBtZXRhZGF0YSwgbG9hZHMgPSBbXTtcblxuICAgIGlmKGN1cnJlbnQpe1xuICAgICAgbWV0YWRhdGEgPSBjdXJyZW50Lm1ldGFkYXRhO1xuXG4gICAgICBpZignbG9hZCcgaW4gbWV0YWRhdGEpe1xuICAgICAgICBsb2Fkcy5wdXNoKG1ldGFkYXRhLmxvYWQoY29udGFpbmVyLCBjdXJyZW50LnZhbHVlKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yKGkgPSAwLCBpaSA9IHJlc291cmNlcy5sZW5ndGg7IGkgPCBpaTsgKytpKXtcbiAgICAgIGN1cnJlbnQgPSByZXNvdXJjZXNbaV07XG4gICAgICBtZXRhZGF0YSA9IGN1cnJlbnQubWV0YWRhdGE7XG5cbiAgICAgIGlmKCdsb2FkJyBpbiBtZXRhZGF0YSl7XG4gICAgICAgIGxvYWRzLnB1c2gobWV0YWRhdGEubG9hZChjb250YWluZXIsIGN1cnJlbnQudmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9uTG9hZGVkID0gUHJvbWlzZS5hbGwobG9hZHMpO1xuICAgIHJldHVybiB0aGlzLm9uTG9hZGVkO1xuICB9XG59XG5cbmNsYXNzIFJlc291cmNlRGVzY3JpcHRpb24ge1xuICBjb25zdHJ1Y3RvcihrZXksIGV4cG9ydGVkVmFsdWUsIHJlc291cmNlVHlwZU1ldGEpe1xuICAgIGlmKCFyZXNvdXJjZVR5cGVNZXRhKXtcbiAgICAgIHJlc291cmNlVHlwZU1ldGEgPSBNZXRhZGF0YS5nZXQoTWV0YWRhdGEucmVzb3VyY2UsIGV4cG9ydGVkVmFsdWUpO1xuXG4gICAgICBpZighcmVzb3VyY2VUeXBlTWV0YSl7XG4gICAgICAgIHJlc291cmNlVHlwZU1ldGEgPSBuZXcgSHRtbEJlaGF2aW9yUmVzb3VyY2UoKTtcbiAgICAgICAgcmVzb3VyY2VUeXBlTWV0YS5lbGVtZW50TmFtZSA9IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKE1ldGFkYXRhLnJlc291cmNlLCByZXNvdXJjZVR5cGVNZXRhLCBleHBvcnRlZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZihyZXNvdXJjZVR5cGVNZXRhIGluc3RhbmNlb2YgSHRtbEJlaGF2aW9yUmVzb3VyY2Upe1xuICAgICAgaWYocmVzb3VyY2VUeXBlTWV0YS5lbGVtZW50TmFtZSA9PT0gdW5kZWZpbmVkKXtcbiAgICAgICAgLy9jdXN0b21lRWxlbWVudCgpXG4gICAgICAgIHJlc291cmNlVHlwZU1ldGEuZWxlbWVudE5hbWUgPSBoeXBoZW5hdGUoa2V5KTtcbiAgICAgIH0gZWxzZSBpZihyZXNvdXJjZVR5cGVNZXRhLmF0dHJpYnV0ZU5hbWUgPT09IHVuZGVmaW5lZCl7XG4gICAgICAgIC8vY3VzdG9tQXR0cmlidXRlKClcbiAgICAgICAgcmVzb3VyY2VUeXBlTWV0YS5hdHRyaWJ1dGVOYW1lID0gaHlwaGVuYXRlKGtleSk7XG4gICAgICB9IGVsc2UgaWYocmVzb3VyY2VUeXBlTWV0YS5hdHRyaWJ1dGVOYW1lID09PSBudWxsICYmIHJlc291cmNlVHlwZU1ldGEuZWxlbWVudE5hbWUgPT09IG51bGwpe1xuICAgICAgICAvL25vIGN1c3RvbWVFbGVtZW50IG9yIGN1c3RvbUF0dHJpYnV0ZSBidXQgYmVoYXZpb3IgYWRkZWQgYnkgb3RoZXIgbWV0YWRhdGFcbiAgICAgICAgSHRtbEJlaGF2aW9yUmVzb3VyY2UuY29udmVudGlvbihrZXksIHJlc291cmNlVHlwZU1ldGEpO1xuICAgICAgfVxuICAgIH1lbHNlIGlmKCFyZXNvdXJjZVR5cGVNZXRhLm5hbWUpe1xuICAgICAgcmVzb3VyY2VUeXBlTWV0YS5uYW1lID0gaHlwaGVuYXRlKGtleSk7XG4gICAgfVxuXG4gICAgdGhpcy5tZXRhZGF0YSA9IHJlc291cmNlVHlwZU1ldGE7XG4gICAgdGhpcy52YWx1ZSA9IGV4cG9ydGVkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1vZHVsZUFuYWx5emVyIHtcbiAgY29uc3RydWN0b3IoKXtcbiAgICB0aGlzLmNhY2hlID0ge307XG4gIH1cblxuICBnZXRBbmFseXNpcyhtb2R1bGVJZCl7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVbbW9kdWxlSWRdO1xuICB9XG5cbiAgYW5hbHl6ZShtb2R1bGVJZCwgbW9kdWxlSW5zdGFuY2UsIHZpZXdNb2RlbE1lbWJlcil7XG4gICAgdmFyIG1haW5SZXNvdXJjZSwgZmFsbGJhY2tWYWx1ZSwgZmFsbGJhY2tLZXksIHJlc291cmNlVHlwZU1ldGEsIGtleSxcbiAgICAgICAgZXhwb3J0ZWRWYWx1ZSwgcmVzb3VyY2VzID0gW10sIGNvbnZlbnRpb25hbCwgdmlld1N0cmF0ZWd5LCByZXNvdXJjZU1vZHVsZTtcblxuICAgIHJlc291cmNlTW9kdWxlID0gdGhpcy5jYWNoZVttb2R1bGVJZF07XG4gICAgaWYocmVzb3VyY2VNb2R1bGUpe1xuICAgICAgcmV0dXJuIHJlc291cmNlTW9kdWxlO1xuICAgIH1cblxuICAgIHJlc291cmNlTW9kdWxlID0gbmV3IFJlc291cmNlTW9kdWxlKG1vZHVsZUlkKTtcbiAgICB0aGlzLmNhY2hlW21vZHVsZUlkXSA9IHJlc291cmNlTW9kdWxlO1xuXG4gICAgaWYodHlwZW9mIG1vZHVsZUluc3RhbmNlID09PSAnZnVuY3Rpb24nKXtcbiAgICAgIG1vZHVsZUluc3RhbmNlID0geydkZWZhdWx0JzogbW9kdWxlSW5zdGFuY2V9O1xuICAgIH1cblxuICAgIGlmKHZpZXdNb2RlbE1lbWJlcil7XG4gICAgICBtYWluUmVzb3VyY2UgPSBuZXcgUmVzb3VyY2VEZXNjcmlwdGlvbih2aWV3TW9kZWxNZW1iZXIsIG1vZHVsZUluc3RhbmNlW3ZpZXdNb2RlbE1lbWJlcl0pO1xuICAgIH1cblxuICAgIGZvcihrZXkgaW4gbW9kdWxlSW5zdGFuY2Upe1xuICAgICAgZXhwb3J0ZWRWYWx1ZSA9IG1vZHVsZUluc3RhbmNlW2tleV07XG5cbiAgICAgIGlmKGtleSA9PT0gdmlld01vZGVsTWVtYmVyIHx8IHR5cGVvZiBleHBvcnRlZFZhbHVlICE9PSAnZnVuY3Rpb24nKXtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHJlc291cmNlVHlwZU1ldGEgPSBNZXRhZGF0YS5nZXQoTWV0YWRhdGEucmVzb3VyY2UsIGV4cG9ydGVkVmFsdWUpO1xuXG4gICAgICBpZihyZXNvdXJjZVR5cGVNZXRhKXtcbiAgICAgICAgaWYocmVzb3VyY2VUeXBlTWV0YS5hdHRyaWJ1dGVOYW1lID09PSBudWxsICYmIHJlc291cmNlVHlwZU1ldGEuZWxlbWVudE5hbWUgPT09IG51bGwpe1xuICAgICAgICAgIC8vbm8gY3VzdG9tZUVsZW1lbnQgb3IgY3VzdG9tQXR0cmlidXRlIGJ1dCBiZWhhdmlvciBhZGRlZCBieSBvdGhlciBtZXRhZGF0YVxuICAgICAgICAgIEh0bWxCZWhhdmlvclJlc291cmNlLmNvbnZlbnRpb24oa2V5LCByZXNvdXJjZVR5cGVNZXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHJlc291cmNlVHlwZU1ldGEuYXR0cmlidXRlTmFtZSA9PT0gbnVsbCAmJiByZXNvdXJjZVR5cGVNZXRhLmVsZW1lbnROYW1lID09PSBudWxsKXtcbiAgICAgICAgICAvL25vIGNvbnZlbnRpb24gYW5kIG5vIGN1c3RvbWVFbGVtZW50IG9yIGN1c3RvbUF0dHJpYnV0ZSBidXQgYmVoYXZpb3IgYWRkZWQgYnkgb3RoZXIgbWV0YWRhdGFcbiAgICAgICAgICByZXNvdXJjZVR5cGVNZXRhLmVsZW1lbnROYW1lID0gaHlwaGVuYXRlKGtleSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighbWFpblJlc291cmNlICYmIHJlc291cmNlVHlwZU1ldGEgaW5zdGFuY2VvZiBIdG1sQmVoYXZpb3JSZXNvdXJjZSAmJiByZXNvdXJjZVR5cGVNZXRhLmVsZW1lbnROYW1lICE9PSBudWxsKXtcbiAgICAgICAgICBtYWluUmVzb3VyY2UgPSBuZXcgUmVzb3VyY2VEZXNjcmlwdGlvbihrZXksIGV4cG9ydGVkVmFsdWUsIHJlc291cmNlVHlwZU1ldGEpO1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICByZXNvdXJjZXMucHVzaChuZXcgUmVzb3VyY2VEZXNjcmlwdGlvbihrZXksIGV4cG9ydGVkVmFsdWUsIHJlc291cmNlVHlwZU1ldGEpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmKGV4cG9ydGVkVmFsdWUgaW5zdGFuY2VvZiBWaWV3U3RyYXRlZ3kpe1xuICAgICAgICB2aWV3U3RyYXRlZ3kgPSBleHBvcnRlZFZhbHVlO1xuICAgICAgfSBlbHNlIGlmKGV4cG9ydGVkVmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZ2lzdHJ5RW50cnkpe1xuICAgICAgICB2aWV3U3RyYXRlZ3kgPSBuZXcgVGVtcGxhdGVSZWdpc3RyeVZpZXdTdHJhdGVneShtb2R1bGVJZCwgZXhwb3J0ZWRWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZihjb252ZW50aW9uYWwgPSBIdG1sQmVoYXZpb3JSZXNvdXJjZS5jb252ZW50aW9uKGtleSkpe1xuICAgICAgICAgIGlmKGNvbnZlbnRpb25hbC5lbGVtZW50TmFtZSAhPT0gbnVsbCAmJiAhbWFpblJlc291cmNlKXtcbiAgICAgICAgICAgIG1haW5SZXNvdXJjZSA9IG5ldyBSZXNvdXJjZURlc2NyaXB0aW9uKGtleSwgZXhwb3J0ZWRWYWx1ZSwgY29udmVudGlvbmFsKTtcbiAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHJlc291cmNlcy5wdXNoKG5ldyBSZXNvdXJjZURlc2NyaXB0aW9uKGtleSwgZXhwb3J0ZWRWYWx1ZSwgY29udmVudGlvbmFsKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShNZXRhZGF0YS5yZXNvdXJjZSwgY29udmVudGlvbmFsLCBleHBvcnRlZFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmKGNvbnZlbnRpb25hbCA9IFZhbHVlQ29udmVydGVyUmVzb3VyY2UuY29udmVudGlvbihrZXkpKSB7XG4gICAgICAgICAgcmVzb3VyY2VzLnB1c2gobmV3IFJlc291cmNlRGVzY3JpcHRpb24oa2V5LCBleHBvcnRlZFZhbHVlLCBjb252ZW50aW9uYWwpKTtcbiAgICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKE1ldGFkYXRhLnJlc291cmNlLCBjb252ZW50aW9uYWwsIGV4cG9ydGVkVmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYoIWZhbGxiYWNrVmFsdWUpe1xuICAgICAgICAgIGZhbGxiYWNrVmFsdWUgPSBleHBvcnRlZFZhbHVlO1xuICAgICAgICAgIGZhbGxiYWNrS2V5ID0ga2V5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYoIW1haW5SZXNvdXJjZSAmJiBmYWxsYmFja1ZhbHVlKXtcbiAgICAgIG1haW5SZXNvdXJjZSA9IG5ldyBSZXNvdXJjZURlc2NyaXB0aW9uKGZhbGxiYWNrS2V5LCBmYWxsYmFja1ZhbHVlKTtcbiAgICB9XG5cbiAgICByZXNvdXJjZU1vZHVsZS5tb2R1bGVJbnN0YW5jZSA9IG1vZHVsZUluc3RhbmNlO1xuICAgIHJlc291cmNlTW9kdWxlLm1haW5SZXNvdXJjZSA9IG1haW5SZXNvdXJjZTtcbiAgICByZXNvdXJjZU1vZHVsZS5yZXNvdXJjZXMgPSByZXNvdXJjZXM7XG4gICAgcmVzb3VyY2VNb2R1bGUudmlld1N0cmF0ZWd5ID0gdmlld1N0cmF0ZWd5O1xuXG4gICAgcmV0dXJuIHJlc291cmNlTW9kdWxlO1xuICB9XG59XG4iXX0= |